package com.geek.javase.ch17.work.tcpwork.tcp5;


import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/*
 *@Date 2025/11/4
 *@Author wangpeng
 *@Description
 * 需求5：当服务器只是读取消息，客户端写出消息，此时一个服务器可以接收多个客户端
 *需求5的弊端：无限接入客户端，每接入一个客户端，就需要开辟一条线程来维系之间的通信；
 *无节制的开辟线程，假设客户端只是进行一个连接，立即销毁线程，必然带来一种浪费！
 *线程开辟的越多，程序死的越快！
 */
public class TCPServer {
    public static void main(String[] args) {
        System.out.println("-------服务器--------");
        ServerSocket ss = null;
        try{
            //创建服务器
            ss = new ServerSocket(8899);
            while(true){
                //接收客户端
                Socket s = ss.accept();
                System.out.println(s.getRemoteSocketAddress()+"已上线");

                //启动读线程
                new Thread(new ReadThread(s)).start();
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            if(ss!= null){
                try {
                    ss.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}
